package cn.levi.excel.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.apache.poi.ss.usermodel.IndexedColors;

/**
 * 用于excell的导入导出。该注解依赖spring环境容器
 * @author lei
 * @since 2024/9/18
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Excell {

	/**
	 * 表头文字描述（别名）
	 */
	String value() default "";

	/**
	 * 宽度
	 */
	int with() default 18;

	/**
	 * 高度
	 */
	int height() default 32;

	/**
	 * 必填，导出时会更具该字段来定义模板的表头样式，
	 */
	boolean required() default false;

	/**
	 * 枚举转换 下载模板时，会生成下拉，
	 * 导入时更具两个值找到对应的字典code
	 */
	Class<? extends Enum<?>> enu() default Enu.class;

	/**
	 * 字典转换 下载模板时，会生成下拉，
	 * 导入时更具两个值找到对应的字典code
	 */
	String typeCode() default "";

	/**
	 * 注释，excell表头的解释说明文字
	 */
	String notes() default "";

	/**
	 * 是否忽略，忽略后导出模板等操作会丢弃掉该字段
	 */
	boolean ignore() default false;
	/**
	 * 单元格格式化
	 */
	String dataFormat() default "";

	/**
	 * 排序
	 */
	int sort() default 0;

	/**
	 * 通过el表达式来设置单元格字体,返回值为short
	 * 颜色参考 {@link  IndexedColors}
	 */
	String fontColor() default "";

	/**
	 * 通过el表达式来设置单元格背景颜色,返回值为short
	 * 颜色参考 {@link  IndexedColors}
	 */
	String backColor() default "";

	/**
	 * 扩展信息,特殊情况可使用jsonstring进行信息扩展，主要是用于信息校验时的标志
	 */
	String extend() default "";

   enum Enu{}

}
